TimesTenでJBoss Serverの様々な機能を使用するには、JBossがTimesTen固有のSQLの動作を認識できるようにtype-mapping XMLディスクリプタを構成する必要があります。この構成の詳細は、『JBoss 4 Application Server Guide』の11.13項を参照してください。
通常、type-mappingディスクリプタはJBoss Serverのconfディレクトリにあるstandardjbosscmp-jdbc.xmlファイルに含まれています。例2.1に、TimesTen用のtype-mappingディスクリプタの例を示します。
<type-mapping> <name>TimesTen</name> <row-locking-template> SELECT ?1 FROM ?2 WHERE ?3 FOR UPDATE </row-locking-template> <pk-constraint-template> PRIMARY KEY (?2) </pk-constraint-template> <fk-constraint-template> ALTER TABLE ?1 ADD CONSTRAINT ?2 FOREIGN KEY (?3) REFERENCES ?4 (?5) </fk-constraint-template> <add-column-template> ALTER TABLE ?1 ADD COLUMN ?2 ?3 </add-column-template> <drop-column-template> ALTER TABLE ?1 DROP COLUMN ?2 </drop-column-template> <alias-header-prefix>t</alias-header-prefix> <alias-header-suffix>_</alias-header-suffix> <alias-max-length>30</alias-max-length> <subquery-supported>true</subquery-supported> <true-mapping>(1=1)</true-mapping> <false-mapping>(1=0)</false-mapping> <function-mapping> <function-name>concat</function-name> <function-sql>CONCAT (?1, ?2)</function-sql> </function-mapping> <function-mapping> <function-name>substring</function-name> <function-sql>SUBSTRING (?1, ?2, ?3)</function-sql> </function-mapping> <function-mapping> <function-name>lcase</function-name> <function-sql>LOWER (?1)</function-sql> </function-mapping> <function-mapping> <function-name>length</function-name> <function-sql>LENGTH (?1)</function-sql> </function-mapping> <function-mapping> <function-name>locate</function-name> <function-sql>INSTR (?2, ?1, ?3)</function-sql> </function-mapping> <function-mapping> <function-name>ucase</function-name> <function-sql>UPPER (?1)</function-sql> </function-mapping> <function-mapping> <function-name>count</function-name> <function-sql>COUNT (?1)</function-sql> </function-mapping> <mapping> <java-type>java.lang.Boolean</java-type> <jdbc-type>TINYINT</jdbc-type> <sql-type>TINYINT</sql-type> </mapping> <mapping> <java-type>java.lang.Byte</java-type> <jdbc-type>TINYINT</jdbc-type> <sql-type>TINYINT</sql-type> </mapping> <mapping> <java-type>java.lang.Short</java-type> <jdbc-type>SMALLINT</jdbc-type> <sql-type>SMALLINT</sql-type> </mapping> <mapping> <java-type>java.lang.Integer</java-type> <jdbc-type>INTEGER</jdbc-type> <sql-type>INTEGER</sql-type> </mapping> <mapping> <java-type>java.lang.Long</java-type> <jdbc-type>BIGINT</jdbc-type> <sql-type>BIGINT</sql-type> </mapping> <mapping> <java-type>java.lang.Float</java-type> <jdbc-type>REAL</jdbc-type> <sql-type>REAL</sql-type> </mapping> <mapping> <java-type>java.math.BigDecimal</java-type> <jdbc-type>DECIMAL</jdbc-type> <sql-type>DECIMAL (40,15)</sql-type> </mapping> <mapping> <java-type>java.lang.Double</java-type> <jdbc-type>DOUBLE</jdbc-type> <sql-type>DOUBLE</sql-type> </mapping> <mapping> <java-type>java.lang.Character</java-type> <jdbc-type>CHAR</jdbc-type> <sql-type>CHARACTER</sql-type> </mapping> <mapping> <java-type>java.lang.String</java-type> <jdbc-type>VARCHAR</jdbc-type> <sql-type>VARCHAR (256)</sql-type> </mapping> <mapping> <java-type>java.sql.Date</java-type> <jdbc-type>DATE</jdbc-type> <sql-type>DATE</sql-type> </mapping> <mapping> <java-type>java.sql.Time</java-type> <jdbc-type>TIME</jdbc-type> <sql-type>TIME</sql-type> </mapping> <mapping> <java-type>java.sql.Timestamp</java-type> <jdbc-type>TIMESTAMP</jdbc-type> <sql-type>TIMESTAMP</sql-type> </mapping> <mapping> <java-type>java.lang.Object</java-type> <!-- directly serializable objects --> <jdbc-type>VARBINARY</jdbc-type> <sql-type>VARBINARY (4194304)</sql-type> </mapping> </type-mapping>TimesTenのこの型マッピング用にJBossを構成するには、JBoss Serverディレクトリにあるconf/standardjbosscmp-jdbc.xml構成ファイルのtype-mappingsセクションにディスクリプタをコピーします。
次に示すように、type-mappingsディスクリプタの要素には、TimesTen固有のSQLでサポートされないものがあります。
TimesTen用のサンプルtype-mappingディスクリプタ内のJava型からSQL型へのマッピングを修正すると、アプリケーション要件によってはパフォーマンスを向上できます。たとえば、サンプル構成では、java.lang.StringがTimesTenのSQL型VARCHAR (256)にマップされています。これをTimesTenのSQL型CHAR (16)に変更すると、パフォーマンスは向上します。